# 函数 的嵌套
def funD(pa, pb):
    print('\n' * 3)
    print(f'执行funC pa:{pa},pa的类型{type(pa)}')
    print(f'执行funC pb:{pb},pb的类型{type(pb)}')


def funC(pa, pb, pc, pd=10):
    print('\n' * 3)
    print(f'执行funC pa:{pa},pa的类型{type(pa)}')
    print(f'执行funC pb:{pb},pb的类型{type(pb)}')
    print(f'执行funC pc:{pc},pc的类型{type(pc)}')
    print(f'执行funC pd:{pd},pd的类型{type(pd)}')
    funD(pa, pb)

def funB(*ags, pa, pb, pc):
    print('\n' * 3)
    print(f'执行funB ags:{ags},ags的类型{type(ags)}')
    print(f'执行funB pa:{pa},pa的类型{type(pa)}')
    print(f'执行funB pb:{pb},pb的类型{type(pb)}')
    print(f'执行funB pc:{pc},pc的类型{type(pc)}')
    funC(pa, pb, pc)


def funA(**key):
    print('\n' * 3)
    print(f'执行funA key:{key},key的类型{type(key)}')
    ags = (1, 2)
    funB(ags, pa=key.get('pa'), pb=key.get('pb'), pc=key.get('pc'))


print("开始")
funA(pa='今天', pb=21, pc=[1, 2, 3])
print("结束")

##
def funE():
    def funF():
        print('方法里面是可以写方法的')
    funF()

funE()